package game.leon.engine.script.exec;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * 编译后, 一个可运行的单位
 * User: bianpeng
 * Date: 12-2-3
 */
public class Chunk {
    // 常量区
    private List<Var> constDefs = new ArrayList<Var>();
    private ByteArrayOutputStream buf = new ByteArrayOutputStream();
    //
    // 从内存构造
    //
    public Chunk() {
    }
    //
    // 从文件构造
    //
    public Chunk(InputStream input) {

    }
    public int addConst(Var data) {
        constDefs.add(data);
        return constDefs.size() - 1;
    }
    public int instruct(int op) {
        return instruct(op, 0, 0, 0);
    }
    public int instruct(int op, int p1, int p2, int p3) {
        int off = buf.size();
        buf.write((op << 4) | p1);
        buf.write((p2 << 4) | p3);
        return off;
    }
    public int instruct(int op, int p1, int p2) {
        int off = buf.size();
        buf.write((op << 4) | p1);
        buf.write(p2);
        return off;
    }
}
